<?php
class User extends Eloquent
{
    public static $error_messages = array(
        'username_required' => 'Vui lòng không để trống tên đăng nhập',
        'username_unique' => 'Tên đăng nhập đã có người dùng, vui lòng chọn tên khác',
        'password_required' => 'Vui lòng không để trống mật khẩu',
        'repassword_same' => 'Nhập lại mật khẩu không khớp',
        'displayname_min' => 'Tên hiển thị tối thiểu 3 kí tự',
        'email_required' => 'Vui lòng cung cấp địa chỉ email',
        'email_unique' => 'Địa chỉ email đã được sử dụng, vui lòng dùng địa chỉ khác',
        'email_email' => 'Vui lòng nhập email đúng định dạng',
        'phone_numeric' => 'Vui lòng nhập số điện thoại hợp lệ',
    );

    /*** Relationship ****/
    public function group()
    {
        return $this->belongs_to('Group');
    }

    public function authentications()
    {
        return $this->has_many('Authentication');
    }

    public function news()
    {
        return $this->has_many('News');
    }

    public function houses()
    {
        return $this->has_many('House');
    }
    /*** End relationship ***/


    public function set_password($password)
    {
        $this->set_attribute('password', Hash::make($password));
    }

    public function get_displayname()
    {
        return $this->get_attribute('display_name');
    }

    public function get_gender()
    {
        return $this->get_attribute('gender') ? 'Nam' : 'Nữ';
    }

    public function get_created_at()
    {
        $date = $this->get_attribute('created_at');
        return date('d/m/Y (H:i:s )', strtotime($date));
    }

    public static function exists($type, $needed)
    {
        return static::where($type, '=', $needed)->first() !== NULL;
    }

    /**Kiểm tra một người dùng có liên kết với một tài khoản nào đó không
     * @param $provider
     * @param $user_id
     * @return bool
     */
    public static function link($provider, $user_id)
    {
        $provider = strtolower($provider);
        return !is_null(Authentication::where_provider($provider)->
            where_user_id($user_id)->first());
    }

    public static function asset_count($id, $attr)
    {
        return call_user_func(array($attr, 'where_user_id'), $id)->count();
    }
}